package com.demarc.pesquisa.negocio.util;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.demarc.pesquisas.negocio.entidade.Endereco;
import com.demarc.pesquisas.negocio.entidade.SimNaoEnum;
import com.demarc.pesquisas.negocio.entidade.domicilio.Domicilio;
import com.demarc.pesquisas.negocio.entidade.domicilio.Morador;
import com.demarc.pesquisas.negocio.entidade.domicilio.TipoBanheiroEnum;
import com.demarc.pesquisas.negocio.entidade.domicilio.TipoMaterialPredominanteConstrucaoEnum;
import com.demarc.pesquisas.negocio.entidade.domicilio.TipoTerrenoEnum;
import com.demarc.pesquisas.negocio.entidade.entrevistado.Entrevistado;

public class DomicilioUtil {

    public static Domicilio criarPadrao(Entrevistado entrevistado) {
        return criar(entrevistado, EnderecoUtil.criarPadrao(),
                new ArrayList<Morador>(Arrays.asList(MoradorUtil.criarPadrao())));
    }

    public static Domicilio criar(Entrevistado entrevistado, Endereco endereco,
            List<Morador> moradores) {

        Domicilio domicilio = new Domicilio();
        // TODO - Adicionado o "Entrevistado" também como morador do domicício, pois é assim que via sistema o sistema está se comportanto.
        domicilio
                .adicionarMorador(MoradorUtil.criar(entrevistado.getNome(), entrevistado.getCpf()));
        for (Morador morador : moradores) {
            domicilio.adicionarMorador(morador);
        }
        int quantidadeResidentes = domicilio.getMoradores().size();

        domicilio.setEndereco(endereco);
        domicilio.setQuantResidentes(quantidadeResidentes);
        domicilio.setQuantComodos(2);
        domicilio.setQuantAposentadosRecebemPensao(1);
        domicilio.setQuantPessoasRecebemBeneficio(2);
        domicilio
                .setTipoMaterialConstrucaoPredominante(TipoMaterialPredominanteConstrucaoEnum.ALVENARIA_TIJOLOS);
        domicilio.setTipoBanheiro(TipoBanheiroEnum.COM_FOSSA);
        domicilio.setPossuiSisterna(SimNaoEnum.NAO);
        domicilio.setPossuiPoco(SimNaoEnum.NAO);
        domicilio.setTipoTerreno(TipoTerrenoEnum.PROPRIO);
        domicilio.setTodosMoradoresPossuemRegistroCivil(SimNaoEnum.SIM);
        domicilio.setQuantMoradoresPossuemRegistroCivil(quantidadeResidentes);
        domicilio.setTodosMoradoresPossuemRG(SimNaoEnum.SIM);
        domicilio.setQuantMoradoresPossuemRG(quantidadeResidentes);
        domicilio.setTodosMoradoresPossuemCPF(SimNaoEnum.SIM);
        domicilio.setQuantMoradoresPossuemCPF(quantidadeResidentes);
        domicilio.setTodosMoradoresACima16AnosPossuemTituloEleitor(SimNaoEnum.SIM);
        domicilio.setQuantMoradoresACima16AnosPossuemTituloEleitor(quantidadeResidentes);
        domicilio.setRendaFamiliar(new BigDecimal("100.00"));
        domicilio.setQuantPessoasTrabalham(0);
        domicilio.setQuantPessoasNaoSabemLerOuEscrever(quantidadeResidentes);
        domicilio.setNecessitaCartao(SimNaoEnum.SIM);

        return domicilio;
    }
}
